package org.aeon.gamechatnest.service;

import org.aeon.gamechatnest.exception.TargetIsAnEmptyException;
import org.aeon.gamechatnest.pojo.TextChannel;

import java.util.List;

/**
 * @author : Liys 2024/5/10 17:56
 */
public interface TextChannelService {
    /**
     * 新增文字频道
     *
     * @param textChannel
     * @return
     */
    boolean save(TextChannel textChannel);

    /**
     * 通过频道id删除频道
     *
     * @param tcId
     * @return
     */
    boolean removeByTcId(Long tcId);

    /**
     * 通过频道id修改频道
     *
     * @param textChannel
     * @return
     */
    boolean modifyByTcId(TextChannel textChannel);

    /**
     * 通过频道名称模糊查询频道
     *
     * @param name
     * @return
     */
    List<TextChannel> findByName(String name);

    /**
     * 通过频道id查询频道
     *
     * @param tcId
     * @return
     */
    TextChannel findByTcId(Long tcId);

    /**
     * 通过频道id查询频道是否存在
     *
     * @param tcId
     * @return
     */
    boolean isNotExist(Long tcId);

    /**
     * 创建服务器默认文字频道
     *
     * @param serverId
     * @return
     */
    boolean createDefaultChannel(Long serverId);

    /**
     * 通过频道id查询频道所属的服务器id
     *
     * @param tcId
     * @return
     */
    Long getServerIdByChannelId(Long tcId) throws TargetIsAnEmptyException;

    /**
     * 通过服务器id删除所有文字频道
     *
     * @param serverId
     */
    boolean removeByServerId(Long serverId);

    /**
     * 获取服务器下所有文字频道
     *
     * @return
     */
    List<TextChannel> textChannels();
}


